1
手动内存管理的陷阱
AI013Lesson 5
00:00

通过 newdelete 建立了一个脆弱的 “责任契约”。程序员必须精确预测每一个执行路径——包括提前返回和异常——以确保资源被正确释放。这种方法极易引发系统性故障。

系统性故障

  • 泄漏陷阱: 在复杂的逻辑结构(if-else、switch)中,若未能为每个 new 配对 delete 将随时间推移逐渐降低系统性能。
  • 指针失效: 诸如 悬空指针 (在释放后访问内存)或 重复释放 会导致未定义行为和安全漏洞。
  • 异常安全性: 如果在分配与释放之间发生异常,那么 delete 将被完全跳过。
new char[]X提前返回(泄漏)X异常(泄漏)防护器(• std::unique_ptr• std::shared_ptr• std::weak_ptr

演进》

C++11/14 对 <memory> 头文件进行了重构,从‘裸指针’转向自动所有权模型,使安全性在编译期就得到强制保障。

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>